import os
from pathlib import Path


def add_project_structure(device_type):
    """创建项目目录结构（增加输入验证）"""
    # 验证设备类型有效性
    if not device_type:
        raise ValueError("设备类型不能为空")
    if ' ' in device_type:
        raise ValueError("设备类型不能包含空格")

    base_path = Path(__file__).parent.parent.parent  # 基于脚本所在目录

    # 创建目录结构（增加异常捕获）
    try:
        # 1. 元素目录
        (base_path / "base" / f"elements_{device_type}").mkdir(parents=True, exist_ok=True)

        # 2. 配置文件
        config_dir = base_path / "config" / f"config_{device_type}"
        config_dir.mkdir(parents=True, exist_ok=True)
        (config_dir / "config.ini").touch(exist_ok=True)

        # 3. 页面包（添加包初始化文件）
        pages_pkg = base_path / "pages" / f"pages_{device_type}"
        pages_pkg.mkdir(parents=True, exist_ok=True)
        (pages_pkg / "__init__.py").touch(exist_ok=True)

        # 4. 测试用例包（带示例代码）
        test_pkg = base_path / "test_cases" / f"test_cases_{device_type}"
        test_pkg.mkdir(parents=True, exist_ok=True)

        # 包初始化文件
        (test_pkg / "__init__.py").touch(exist_ok=True)

        # 配置文件模板
        configure_file = test_pkg / "configure.py"
        if not configure_file.exists():
            configure_file.write_text("from selenium import webdriver\n\n"
                                      "def setup():\n"
                                      "    driver = webdriver.Chrome()\n"
                                      "    driver.implicitly_wait(10)\n"
                                      "    return driver\n")

        # 测试用例模板
        test_case = test_pkg / "Test_case_0001.py"
        if not test_case.exists():
            test_case.write_text("import pytest\n"
                                 "from . import configure\n\n"
                                 "class TestBasicFunctionality:\n"
                                 "    def test_login(self):\n"
                                 "        driver = configure.setup()\n"
                                 "        driver.get('https://example.com')\n"
                                 "        # 测试步骤\n"
                                 "        driver.quit()\n")

        print("项目结构创建成功！")
        print(f"设备类型: {device_type}")
        print(f"配置文件路径: {config_dir.resolve()}")

    except PermissionError as e:
        print(f"权限不足，请检查目录写入权限: {e.filename}")
    except Exception as e:
        print(f"未知错误: {str(e)}")


if __name__ == "__main__":
    # 控制台交互输入
    device = input("请输入设备类型名称（例如 E01）: ").strip()

    # 执行创建
    if device:
        add_project_structure(device)
    else:
        print("错误：设备类型不能为空！")